package gorm

import (
	"gitee.com/chejiangyi/bsfgo/core/base2"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
)

var GormUtil = &GormUtilTool{}

type GormUtilTool struct {
}

func (*GormUtilTool) CreateDb() *gorm.DB {
	db, err := gorm.Open(mysql.Open(base2.BsfConfigInstance.GetDbDataSourceName()), &gorm.Config{
		Logger:                 logger.Default.LogMode(logger.Info), //打印日志
		SkipDefaultTransaction: true,                                //默认不启动事务
		PrepareStmt:            true,                                //默认缓存编译命令
	})
	if err != nil {
		panic(base2.NewBsfError2("gorm初始化失败", err))
	}
	//
	sqlDB, err := db.DB()
	if err != nil {
		panic(base2.NewBsfError2("gorm获取sql.DB失败", err))
	}
	// 设置连接池
	sqlDB.SetMaxIdleConns(base2.BsfConfigInstance.GetDbMinPoolSize())        // 空闲连接池中的最大连接数
	sqlDB.SetMaxOpenConns(base2.BsfConfigInstance.GetDbMaxPoolSize())        // 数据库的最大打开连接数
	sqlDB.SetConnMaxLifetime(base2.BsfConfigInstance.GetDbConnMaxLifetime()) // 连接可重用的最大时间
	return db
}
